/*
jQuery(function () {
	...
});
是 $(document).ready()的简写。
回调函数是：当DOM加载完成后要执行的函数。

使用 $(document).ready() 的简写，同时内部的 jQuery 代码依然使用 $ 作为别名，而不管全局的 $ 为何。
jQuery(function($) {
  // 你可以在这里继续使用$作为别名...
});
 */


/*
查询 dom。

var $obj = jQuery();
	返回一个空的 jQuery 对象。

var $obj = jQuery('#id | .class | tagName');
	在当前 HTML Document 范围内查找匹配的 htmlDom，结果是 jQuery 类型的对象。

var $obj = jQuery('#id | .class | tagName', htmlDomElment);
	在给定的 htmlDomElment 范围内查找匹配的 htmlDom，结果是 jQuery 类型的对象。

var $obj = jQuery('#id | .class | tagName', jQueryObject);
	在给定的 jQueryObject 范围内查找匹配的 htmlDom，结果是 jQuery 类型的对象。

var $obj = jQuery(htmlDomElement);
	将一个 htmlDomElement 包装成 jQuery 类型的对象。

var $obj = jQuery(htmlDomElementArray);
	将一个 htmlDomElementArray 包装成 jQuery 类型的对象。

var $obj = jQuery(jsObject);
	将一个 jsObject 包装成 jQuery 类型的对象。

var $obj = jQuery(jQueryObject);
	得到 jQueryObject 的一个克隆对象。


$("div > p");
找到所有 p 元素，并且这些元素都必须是 div 元素的子元素。

$(document.body).css( "background", "black" );
设置页面背景色。

$(myForm.elements).hide()
隐藏一个表单中所有元素。

$("input:radio", document.forms[0]);
在文档的第一个表单中，查找所有的单选按钮(即: type 值为 radio 的 input 元素)。

$("div", xml.responseXML);
在一个由 AJAX 返回的 XML 文档中，查找所有的 div 元素。
 */


/*
创建 dom。

var $obj = jQuery('html字符串');
	动态创建一个 htmlDom。

var $obj = jQuery('html字符串', Document);
	Document 就是 ownerDocument，也就是创建的这个 dom 的属主。

var $obj = jQuery('html字符串', props{});
	动态创建一个 htmlDom，可同时设置一系列的属性、事件等。


创建单个元素时，需要使用闭合标签或xml严格格式的开启和闭合标签：
$('<span/>')，或者 $('<span></span>');
而 $('<span>') 的语法在 jQuery 中相当于 $(document.createElement("span")) 。

创建 input 标签有一些限制：
创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。
// 在 IE 中无效:
$("<input>").attr("type", "checkbox");
// 在 IE 中有效:
$("<input type='checkbox'>");

动态创建一个 div 元素（以及其中的所有内容），并将它追加到 body 元素中。在这个函数的内部，是通过临时创建一个元素，并将这个元素的 innerHTML 属性设置为给定的标记字符串，来实现标记到 DOM 元素转换的。所以，这个函数既有灵活性，也有局限性。
我的理解是：body 和 该 div 之间可能有其他的什么标签。具体未测试。
$("<div><p>Hello</p></div>").appendTo("body");

props 用法：
$("<div>", {
  "class": "test",
  text: "Click me!",
  click: function(){
    $(this).toggleClass("test");
  }
}).appendTo("body");
$("<input>", {
  type: "text",
  val: "Test",
  focusin: function() {
    $(this).addClass("active");
  },
  focusout: function() {
    $(this).removeClass("active");
  }
}).appendTo("form");

 */


/*
jQuery.readyException = function( error ) {
  console.error( error );
};
处理包裹在jQuery()中函数同步抛出的错误。

当包裹在jQuery()或jQuery( document ).ready()，或等效的函数中的函数同步抛出错误的时候，这个方法就会被触发。默认情况下，在一个超时，它重新抛出错误，因此它被记录在控制台中，并传递给window.onerror，而不是被静悄悄的吞噬。如果你想以不同的方式处理这种错误，可以覆盖此方法。
 */